#include "zf_common_headfile.h"
#pragma section all "cpu0_dsram"
#define KEY1                    (P20_6)    //按1进入发车选项
#define KEY2                    (P20_7)    //按2进入数据查看，在这其中再次按3向下选择，按1确定，按4返回
#define KEY3                    (P11_2)    //按3进入flash
#define KEY4                    (P11_3)    //按4取消
#define FLASH_SECTION_INDEX       (0)                                 // 存储数据用的扇区
#define FLASH_PAGE_INDEX          (11)                                // 存储数据用的页码 倒数第一个页码
char delay_time = 300;
int flag=0,biaozhiwu1=0,shuzi=0,biaozhiwu2=0;

void menu1()
{
    tft180_show_string(0, 0, "|--- GO");
    tft180_show_string(0, 1, "|--- LOOK");
    tft180_show_string(0, 2, "|--- FLASH");
}

int menu2()
{
    int n=0;
   while(1)
   {
    tft180_show_string(0, 0, "|--- GO");
    tft180_show_string(0, 1, "|--- LOOK");
    tft180_show_string(0, 2, "|   |--- GPS");
    tft180_show_string(0, 3, "|   |--- MPU6050");
    tft180_show_string(0, 4, "|   |--- CAMERA");
    tft180_show_string(0, 5, "|   |--- ENCODER");
    tft180_show_string(0, 6, "|   |--- MOTO_PID");
    tft180_show_string(0, 7, "|   |--- WIFI");
    tft180_show_string(0, 8, "|--- FLASH");
    key();
    for(n=2;flag!=1||flag!=4;)
    {
        tft180_show_string(2, n,"->");
        if(flag==3)
        {
            n++;
            if(n==7)
            n==2;
        }
    }
    if(flag==1||flag==4)
    {
        biaozhiwu1=flag;
        break;
    }
    
   }
   return biaozhiwu1;
}

void key()
{
    if( gpio_get_level(KEY1)==0)  
        {
            system_delay_ms(20);
            while(gpio_get_level(KEY1)==0);  //跳过按键震荡
            system_delay_ms(20);
            flag=1;
        }   
    if( gpio_get_level(KEY2)==0)  
        {
            system_delay_ms(20);
            while(gpio_get_level(KEY2)==0);  //跳过按键震荡
            system_delay_ms(20);
            flag=2;
        }
    if( gpio_get_level(KEY3)==0)  
        {
            system_delay_ms(20);
            while(gpio_get_level(KEY3)==0);  //跳过按键震荡
            system_delay_ms(20);
             flag=3;
        }
        
        if( gpio_get_level(KEY4)==0)  
        {
            system_delay_ms(20);
            while(gpio_get_level(KEY4)==0);  //跳过按键震荡
            system_delay_ms(20);
            flag=4;
        }
}

int Shuzi()
{
    shuzi=0;
    key();
    if(flag==1)
    shuzi++;
    return shuzi;
}

int Flash()
{
    while(1)
   {
     if(flash_check(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX))                      // 判断是否有数据
        flash_erase_page(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX);
    Shuzi();                
    flash_read_page_to_buffer(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX);           // 将数据从 flash 读取到缓冲区
    printf("%d",flash_union_buffer[0].int8_type);
    flash_union_buffer[0].int8_type   = shuzi;
    flash_write_page_from_buffer(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX); 
    flash_read_page_to_buffer(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX); 
     key();
    system_delay_ms(200);
    if(flag==4)
   {
    biaozhiwu2=flag;
    break;
   }
   return biaozhiwu2;
}
}
   

int core0_main(void)
{
    clock_init();                   // 获取时钟频率<务必保留>
    debug_init();                   // 初始化默认调试串口

    gpio_init(KEY1, GPI, GPIO_HIGH, GPI_PULL_UP);           // 初始化 KEY1 输入 默认高电平 上拉输入
    gpio_init(KEY2, GPI, GPIO_HIGH, GPI_PULL_UP);           // 初始化 KEY2 输入 默认高电平 上拉输入
    gpio_init(KEY3, GPI, GPIO_HIGH, GPI_PULL_UP);           // 初始化 KEY3 输入 默认高电平 上拉输入
    gpio_init(KEY4, GPI, GPIO_HIGH, GPI_PULL_UP);           // 初始化 KEY4 输入 默认高电平 上拉输入
    
    while(1)
    {
        menu1();
        key();
        switch(flag)
        {
            case 1:
                tft180_clear();
                key();
                if(flag==4)
                break;
            case 2:
                tft180_clear();
                key();
                menu2();
                if(biaozhiwu1==1)
                {
                    tft180_clear();
                    break;
                }
                else if(biaozhiwu1==4)
                {
                    tft180_clear();
                    break;
                }
            case 3:
                tft180_clear();
                key();
                if(biaozhiwu2==4)
                {
                    tft180_clear();
                    break;
                }
                


        }

    }


}

#pragma section all restore
